package com.iqiyi.dbagent.base.filecenter;
//package com.iqiyi.filecenter;
//
//import java.io.File;
//import java.io.IOException;
//import java.io.RandomAccessFile;
//import java.util.ArrayList;
//import java.util.Collections;
//import java.util.List;
//import java.util.concurrent.ArrayBlockingQueue;
//import java.util.concurrent.ThreadPoolExecutor;
//import java.util.concurrent.TimeUnit;
//
///**
//* @Title: Snippet.java
//* @Package com.iqiyi.filecenter
//* @Description: TODO(��һ�仰�������ļ���ʲô)
//* @author wangnianming
//* @date 2015��12��18�� ����1:42:42
//* @version V1.0
//*/
//public class FileCenter {
//         /**
//         * ����ļ�
//         * @param fileName ���ֵ������ļ���
//         * @param byteSize �������ֽڴ�С���
//         * @return ��ֺ���ļ����б�
//         * @throws IOException
//         */
//        public List<String> splitBySize(String fileName, int byteSize)
//                throws IOException {
//            List<String> parts = new ArrayList<String>();
//            File file = new File(fileName);
//            int count = (int) Math.ceil(file.length() / (double) byteSize);
//            int countLen = (count + "").length();
//            ThreadPoolExecutor threadPool = new ThreadPoolExecutor(count,
//                    count * 3, 1, TimeUnit.SECONDS,
//                    new ArrayBlockingQueue<Runnable>(count * 2));
//    
//            for (int i = 0; i < count; i++) {
//                String partFileName = file.getName() + "." + FileUtil.leftPad((i + 1) + "", countLen, '0') + ".part";
//                threadPool.execute(new SplitRunnable(byteSize, i * byteSize,
//                        partFileName, file));
//                parts.add(partFileName);
//            }
//            return parts;
//        }
//        /**
//         * �ϲ��ļ�
//         * 
//         * @param dirPath ����ļ�����Ŀ¼��
//         * @param partFileSuffix ����ļ���׺��
//         * @param partFileSize ����ļ����ֽ����С
//         * @param mergeFileName �ϲ�����ļ���
//         * @throws IOException
//         */
//        public void mergePartFiles(String dirPath, String partFileSuffix,
//                int partFileSize, String mergeFileName) throws IOException {
//            ArrayList<File> partFiles = FileUtil.getDirFiles(dirPath,
//                    partFileSuffix);
//            Collections.sort(partFiles, new FileUtil.FileComparator());
//
//            RandomAccessFile randomAccessFile = new RandomAccessFile(mergeFileName,"rw");
//            randomAccessFile.setLength(partFileSize * (partFiles.size() - 1)
//                    + partFiles.get(partFiles.size() - 1).length());
//            randomAccessFile.close();
//
//            ThreadPoolExecutor threadPool = new ThreadPoolExecutor(
//                    partFiles.size(), partFiles.size() * 3, 1, TimeUnit.SECONDS,
//                    new ArrayBlockingQueue<Runnable>(partFiles.size() * 2));
//
//            for (int i = 0; i < partFiles.size(); i++) {
//                threadPool.execute(new MergeRunnable(i * partFileSize,
//                        mergeFileName, partFiles.get(i)));
//            }
//
//        }
//}
//
